package cn.tedu.knows.resource.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.UUID;

@RestController
@RequestMapping("/v1/images")
@Slf4j
public class ImageController {

    //获得配置文件中配置的信息
    @Value("${knows.resource.path}")
    //resourcePath的值就来自上面配置指定的值
    private File resourcePath;

    @Value("${knows.resource.host}")
    private String resourceHost;


    @PostMapping("")
    public String uploadFile(MultipartFile imageFile) throws IOException {
        //使用日期划分文件夹
        //yyyy是年的占位符 MM是月占位符 dd是日
        String path= DateTimeFormatter
                .ofPattern("yyyy/MM/dd")
                .format(LocalDate.now());
        //path:"2021/06/02"
        //创建文件夹(F:/upload/2021/06/02)
        File folder=new File(resourcePath,path);
        folder.mkdirs();

        //获得文件名
        String fileName=imageFile.getOriginalFilename();
        //获取后缀名
        //a.bc.png
        //01234567
        String ext= fileName.substring(
                fileName.lastIndexOf("."));
        //随机生成文件名
        String name= UUID.randomUUID().toString()+ext;
        //确定上传文件
        //F:/upload/2021/06/02/adshasfajsdhf.png
        File file=new File(folder,name);

        imageFile.transferTo(file);

        //拼接一个可以访问静态资源服务器图片的路径
        //目的是访问刚刚上传成功的图片,显示在页面上
        //http://localhost:8899/2021/06/02/687dd63.jpg
        String url=resourceHost+"/"+path+"/"+name;
        log.debug("访问路径为:{}",url);
        //返回url!!!!!
        return url;
    }
}







